home *** CD-ROM | disk | FTP | other *** search
- package mx.rpc.http.mxml
- {
- import flash.events.ErrorEvent;
- import mx.core.IMXMLObject;
- import mx.core.mx_internal;
- import mx.managers.CursorManager;
- import mx.messaging.events.MessageEvent;
- import mx.messaging.messages.AsyncMessage;
- import mx.messaging.messages.IMessage;
- import mx.rpc.AsyncDispatcher;
- import mx.rpc.AsyncToken;
- import mx.rpc.Fault;
- import mx.rpc.events.AbstractEvent;
- import mx.rpc.events.FaultEvent;
- import mx.rpc.http.HTTPService;
- import mx.rpc.mxml.Concurrency;
- import mx.rpc.mxml.IMXMLSupport;
- import mx.utils.Translator;
-
- use namespace mx_internal;
-
- public class HTTPService extends mx.rpc.http.HTTPService implements IMXMLSupport, IMXMLObject
- {
- private static const TRANSLATOR:Translator = Translator.getDefaultInstanceFor(mx.rpc.http.mxml.HTTPService);
-
- private var _concurrency:String;
-
- private var document:Object;
-
- private var _showBusyCursor:Boolean;
-
- private var id:String;
-
- public function HTTPService()
- {
- super();
- showBusyCursor = false;
- concurrency = Concurrency.MULTIPLE;
- }
-
- override public function send(param1:Object = null) : AsyncToken
- {
- var _loc2_:AsyncToken = null;
- var _loc3_:Fault = null;
- var _loc4_:FaultEvent = null;
- if(Concurrency.SINGLE == concurrency && Boolean(mx_internal::activeCalls.hasActiveCalls()))
- {
- _loc2_ = new AsyncToken(null);
- _loc3_ = new Fault("ConcurrencyError",TRANSLATOR.textOf("pendingCallExists"));
- _loc4_ = FaultEvent.createEvent(_loc3_,_loc2_);
- new AsyncDispatcher(mx_internal::dispatchRpcEvent,[_loc4_],10);
- return _loc2_;
- }
- return super.send(param1);
- }
-
- public function get concurrency() : String
- {
- return _concurrency;
- }
-
- public function set showBusyCursor(param1:Boolean) : void
- {
- _showBusyCursor = param1;
- }
-
- public function get showBusyCursor() : Boolean
- {
- return _showBusyCursor;
- }
-
- override mx_internal function preHandle(param1:MessageEvent) : AsyncToken
- {
- var _loc2_:AsyncToken = null;
- if(showBusyCursor)
- {
- CursorManager.removeBusyCursor();
- }
- _loc2_ = super.mx_internal::preHandle(param1);
- if("last" == concurrency && !mx_internal::activeCalls.wasLastCall(AsyncMessage(param1.message).correlationId))
- {
- return null;
- }
- return _loc2_;
- }
-
- public function set concurrency(param1:String) : void
- {
- _concurrency = param1;
- }
-
- override mx_internal function dispatchRpcEvent(param1:AbstractEvent) : void
- {
- var _loc2_:ErrorEvent = null;
- param1.mx_internal::callTokenResponders();
- if(!param1.isDefaultPrevented())
- {
- if(hasEventListener(param1.type))
- {
- dispatchEvent(param1);
- }
- else if(param1 is FaultEvent && (param1.token == null || !param1.token.hasResponder()))
- {
- if(!(Boolean(document) && Boolean(document.willTrigger(ErrorEvent.ERROR))))
- {
- throw FaultEvent(param1).fault;
- }
- _loc2_ = new ErrorEvent(ErrorEvent.ERROR,true,true);
- _loc2_.text = FaultEvent(param1).fault.faultString;
- document.dispatchEvent(_loc2_);
- }
- }
- }
-
- public function initialized(param1:Object, param2:String) : void
- {
- this.id = param2;
- this.document = param1;
- }
-
- override public function cancel() : void
- {
- if(showBusyCursor)
- {
- CursorManager.removeBusyCursor();
- }
- super.cancel();
- }
-
- override mx_internal function invoke(param1:IMessage, param2:AsyncToken = null) : AsyncToken
- {
- if(showBusyCursor)
- {
- CursorManager.setBusyCursor();
- }
- return super.mx_internal::invoke(param1,param2);
- }
- }
- }
-
-